﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

//1.函数的默认参数，参数后面=...；
//void funcDefaultParam(int a = 10, int b = 20)
//3.传入参数，如果有参数，就用传入的参数，没有参数就用就用默认值；
void funcDefaultParam(int a, int b = 20, int c = 30)
//2.函数参数的注意事项，如果有一个位置有了默认参数，那么从这个位置开始，从左往右都必须要有默认参数；
//void funcDefaultParam(int a, int b = 20, int c)
{
	//cout << "a+b = " << a + b << endl;//30
	cout << "a+b+c = " << a + b + c << endl; // 51 --> 33
}

//4.函数的占位参数；如果有了占位参数，函数调用时，就必须要提供这个参数，但是用不到这个参数；
//5.占位参数，没有什么大用途，只有后面重载 ++符号才有一点点用；
//void funcOccupyParam(int a, int)
//6.占位参数，可以有默认值；
void funcOccupyParam(int a, int = 1)
{

}

//7.如果函数声明里面有了默认参数，那么函数实现时就不能有默认参数值；
//8.函数声明和实现，只能有一个里面有默认参数，不要同时都出现默认参数；
void myFuncParam(int a = 10, int b = 10);
void myFuncParam(int a, int b)
{

}
void testFuncParam()
{
	//funcDefaultParam();
	//funcDefaultParam(1);
	//funcDefaultParam(1, 2, 3);
	funcDefaultParam(1, 2);

	//funcOccupyParam(10, 2);
	funcOccupyParam(10);
}

//main248：函数默认参数及占位参数
int main248()
{
	testFuncParam();

	system("pause");
	return EXIT_SUCCESS;
}